package com.jackstraw.jack_base.datasource.elasticsearch.entity;


import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.jackstraw.jack_base.datasource.elasticsearch.aspect.annotation.SearchFind;
import com.jackstraw.jack_base.util.DateTimeUtil;
import lombok.Data;
import lombok.ToString;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
import org.springframework.data.elasticsearch.annotations.Setting;

import java.io.Serializable;
import java.util.Date;
import java.util.List;


/*
 * shards 副本数
 * replicas 分片数
 * */
@Data
@ToString
@Document(indexName = "product")
@Setting(shards = 1, replicas = 1)
public class Product extends ElasticSearchBaseEntity<Product> {

    /**
     * 商品名称
     */
    @SearchFind
    @Field(store = true, analyzer = "ik_max_word", searchAnalyzer = "ik_max_word", type = FieldType.Text)
    private String title;

    /**
     * 不包含的商品名称
     */
    @JsonIgnore
    private String titleNot;

    /**
     * 分类名称
     */
    @Field(type = FieldType.Keyword)
    private String category;

    /**
     * 不包含的分类名称
     */
    @JsonIgnore
    private String categoryNot;

    /**
     * category中要有集合中一种或几种
     */
    @JsonIgnore
    private List<String> categoryList;

    /**
     * 价格
     */
    @SearchFind
    @Field(type = FieldType.Double)
    private Double price;

    /**
     * 最大价格
     * <p>
     * 闭合
     */
    @JsonIgnore
    private Double priceMax;

    /**
     * 最小价格
     * <p>
     * 非闭合
     */
    @JsonIgnore
    private Double priceMin;

    /**
     * 图片地址
     */
    @Field(type = FieldType.Keyword, index = false)
    private String imageAddress;

    /**
     * 手机号码
     */
    @Field(type = FieldType.Keyword)
    private String phone;


    /**
     * 创建时间
     */
    @Field(type = FieldType.Date)
    @JsonFormat(pattern = DateTimeUtil.NORM_DATETIME_MS_PATTERN, timezone = "GMT+8")
    private Date createDate;


    /**
     * 最晚创建时间
     * <p>
     * 非闭合
     */
    @JsonIgnore
    @JsonFormat(pattern = DateTimeUtil.NORM_DATETIME_MS_PATTERN, timezone = "GMT+8")
    private Date createDateMax;
    /**
     * 最早创建时间
     * <p>
     * 闭合
     */
    @JsonIgnore
    @JsonFormat(pattern = DateTimeUtil.NORM_DATETIME_MS_PATTERN, timezone = "GMT+8")
    private Date createDateMin;

}
